<?php
/**
 * @APP@
 *
 * PHP versions 5
 *
 * @category   BEAR
 * @package    App
 * @subpackage App_Form
 * @author     $Author: anonymous $ <anonymous@example.com>
 * @version    SVN: Release: $Id:$
 */
/**
 * ユーザーフォーム
 *
 * <pre>
 * ユーザー、ユーザープロフィールに関するフォームです
 * </pre>
 *
 * @package    App
 * @subpackage App_Form
 * @author     $useror: anonymous $
 * @version    SVN: Release: $Id:$
 */
class App_Form_User_Password extends BEAR_Base
{
    /**
     * インジェクト
     *
     */
    public function onInject()
    {
        $this->_form = array('formName' => 'passwordForm');
    }

    /**
     * パスワードフォーム
     *
     * @param array $user
     */
    public function build()
    {
        $form = BEAR::dependency('BEAR_Form', $this->_form);
        $form->addElement('password', '_old_password', array('現在のパスワード',
            '現在のパスワードを入力してください'), 'size=12 maxsize=12');
        $form->addElement('password', 'password', array('新しいパスワード', '4文字から12文字'), 'size=12 maxsize=12');
        $form->addElement('password', '_repeatPass', array('新しいパスワードを再入力',
            'もう一度入力してください'), 'size=12 maxsize=12');
        $form->addRule('_old_password', '現在のパスワードの入力が必要です', 'required');
        $form->addRule('password', 'パスワードの入力が必要です', 'required');
        $form->addRule('_repeatPass', 'パスワード確認の入力が必要です', 'required');
        $form->addRule('password', 'パスワードは4文字以上12文字以下です。', 'rangelength', array(4, 12));
        $form->addFormRule(array('App_Form_User_Password', 'ruleOldPassword'));
        $form->addRule(array('password', '_repeatPass'), 'パスワード確認とマッチしません', 'compare', null);
        $form->addElement('submit', '_submit', 'パスワード変更する');
    }

    /**
     * パスワードチェックフォームルール
     *
     * @param array $submit
     *
     * @return mixed
     */
    public static function ruleOldPassword($submit)
    {
        $values['password'] = $submit['_old_password'];
        $appAuth = BEAR::dependency('App_Auth');
        $auth = $appAuth->get();
        $values['id'] = $auth['user_name'];
        $resource = BEAR::dependency('BEAR_Resource');
        $params = array('uri' => 'User/Login', 'values' => $values);
        $login = $resource->read($params)->getBody();
        $result = ($login) ? true : array('_old_password' => '現在のパスワードが間違ってます');
        return $result;
    }
}